import { isNil, isArray, isObject, isString } from 'lodash'

export {
    isUndefined,
    isArray,
    isFunction,
    isObject,
    isString,
    isDate,
    isSymbol,
    isBoolean,
    isNumber
} from 'lodash'

export const isEmpty = (val: unknown) =>
    (!val && val !== 0) ||
    (isArray(val) && val.length === 0) ||
    (isObject(val) && !Object.keys(val).length)


export const isElement = (e: unknown): e is Element => {
    if (typeof Element === 'undefined') return false
    return e instanceof Element
}

export const isPropAbsent = (prop: unknown): prop is null | undefined => {
    return isNil(prop)
}

export const isStringNumber = (val: string): boolean => {
    if (!isString(val)) {
        return false
    }
    return !Number.isNaN(Number(val))
}